package com.luoxiang.lib_common.utils;


import com.luoxiang.lib_common.bean.ImCallbackDTO;
import com.luoxiang.lib_common.bean.NumberBean;

import io.reactivex.Observable;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

/**
 * @Description TODO
 * @systemUser Administrator
 * @Author LiangXin
 * @Date 08-19-2022 周五 10:37
 */
public interface ApiService {
    /**
     * IM通讯前置接口
     *
     * @return
     */
    @FormUrlEncoded
    @POST("im/imPre")
    Observable<NumberBean> getImPreChat(@Field("token") String token, @Field("toUserId")
    String toUserId, @Field("type") String type, @Field("message") String message);

    /**
     * 获取用户是否可视频
     */
    @FormUrlEncoded
    @POST("im/preCall")
    Observable<NumberBean> getimPre(@Field("extra") String extra, @Field("toUserId") String toUserId, @Field("token") String token);

    /***
     * 获取系统消息*/
    @FormUrlEncoded
    @POST("im/official")
    Observable<NumberBean> imOfficial(@Field("token") String token);

    /***
     * */
    @FormUrlEncoded
    @POST("im/getGifts")
    Observable<NumberBean> getGifts(@Field("token") String token);

    /**
     * 赠送礼物
     */
    @FormUrlEncoded
    @POST("im/giveGift")
    Observable<NumberBean> getgiveGift(@Field("token") String token, @Field("extra") String extra, @Field("toUserId") String toUserId, @Field("type") int type, @Field("giftId") int giftId, @Field("relationId") String relationId, @Field("num") int num);

    /**
     * 发送消息给后台
     */
    @POST("im/imCallback")
    Observable<NumberBean> getImCallback(@Body ImCallbackDTO imCallbackDTO);

    /***
     * 获取推送消息列表（官方消息）
     */
    @FormUrlEncoded
    @POST("push/getPushMessage")
    Observable<NumberBean> officialMessage(@Field("token") String token, @Field("page") int page, @Field("limit") int limit);

    /***
     * 获取通话评价*/
    @FormUrlEncoded
    @POST("im/getEvaluationInfo")
    Observable<NumberBean> getEvaluationInfo(@Field("token") String token, @Field("channelId") String channelId);

    /**
     * 通话评价
     */
    @FormUrlEncoded
    @POST("im/callEvaluate")
    Observable<NumberBean> callEvaluate(@Field("token") String token, @Field("channelId") String channelId, @Field("type") int type, @Field("labelIds") String labelIds);

    /**
     * 拉黑/取消拉黑
     */
    @FormUrlEncoded
    @POST("im/block")
    Observable<NumberBean> getImblock(@Field("extra") String extra, @Field("token") String token, @Field("toUserId") int toUserId, @Field("block") int block);

    /**
     * 获取拉黑状态
     */
    @FormUrlEncoded
    @POST("im/getBlock")
    Observable<NumberBean> getBlock(@Field("extra") String extra, @Field("token") String token, @Field("toUserId") int toUserId);

    @FormUrlEncoded
    @POST("base/getNewestVersion")
    Observable<NumberBean> getNewestVersion(@Field("token") String token, @Field("extra") String extra, @Field("type") String type);

    /**
     * 获取排行榜数据
     */
    @FormUrlEncoded
    @POST("top/getUserTop")
    Observable<NumberBean> getInviteListData(@Field("extra") String extra, @Field("token") String token, @Field("way") int listType, @Field("type") int type);

    /**
     * 获取排行榜奖励说明
     */
    @FormUrlEncoded
    @POST("top/rewardList")
    Observable<NumberBean> getListIllustrateData(@Field("extra") String extra, @Field("token") String token);

    /**
     * 领取奖励
     */
    @FormUrlEncoded
    @POST("top/receiveReward")
    Observable<NumberBean> claimReward(@Field("extra") String extra, @Field("token") String token, @Field("id") String id);

    @POST("base/getContactInformation")
    Observable<NumberBean> getHelpInformation();


    @FormUrlEncoded
    @POST("im/videoCallList")
    Observable<NumberBean> getVideoCallList(@Field("extra") String extra, @Field("token") String token, @Field("page") int page, @Field("limit") int limit);

    @FormUrlEncoded
    @POST("im/mutualFriendList")
    Observable<NumberBean> getMutualFriendList(@Field("extra") String extra, @Field("token") String token);

    @FormUrlEncoded
    @POST("im/removeVideoCallLog")
    Observable<NumberBean> removeVideoCallLog(@Field("extra") String extra, @Field("token") String token, @Field("id") int id);
}
